home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / winiter.cls < prev    next >
Text File  |  1997-06-14  |  2KB  |  62 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "GWinIter"
  6. Attribute VB_GlobalNameSpace = True
  7. Attribute VB_Creatable = True
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = True
  10. Option Explicit
  11.  
  12. Public Enum EErrorWinIter
  13.     eeBaseWinIter = 13630   ' WinIter
  14. End Enum
  15.  
  16. Function IterateChildWindows(ByVal iLevel As Integer, _
  17.                              ByVal hWnd As Long, _
  18.                              helper As IWindowsHelper) As Long
  19.     BugAssert hWnd <> hNull
  20.  
  21.     ' Handle current window, allowing user to fail
  22.     
  23.     IterateChildWindows = helper.DoWindow(iLevel, hWnd)
  24.     If IterateChildWindows <> hNull Then Exit Function
  25.     ' Get its child (if any)
  26.     hWnd = GetWindow(hWnd, GW_CHILD)
  27.     ' Iterate through each child window
  28.     Do While hWnd <> hNull
  29.         IterateChildWindows = _
  30.             IterateChildWindows(iLevel + 1, hWnd, helper)
  31.         If IterateChildWindows <> hNull Then Exit Function
  32.         ' Get next child
  33.         hWnd = GetWindow(hWnd, GW_HWNDNEXT)
  34.         ' Give other processes some cycles
  35.         DoEvents
  36.     Loop
  37.     ' Nothing found
  38.     IterateChildWindows = hNull
  39.  
  40. End Function
  41.  
  42. #If fComponent = 0 Then
  43. Private Sub ErrRaise(e As Long)
  44.     Dim sText As String, sSource As String
  45.     If e > 1000 Then
  46.         sSource = App.ExeName & ".WinIter"
  47.         Select Case e
  48.         Case eeBaseWinIter
  49.             BugAssert True
  50.        ' Case ee...
  51.        '     Add additional errors
  52.         End Select
  53.         Err.Raise COMError(e), sSource, sText
  54.     Else
  55.         ' Raise standard Visual Basic error
  56.         sSource = App.ExeName & ".VBError"
  57.         Err.Raise e, sSource
  58.     End If
  59. End Sub
  60. #End If
  61.  
  62.